home *** CD-ROM | disk | FTP | other *** search
- /* by: Dan Kozak */
-
- #include <stdio.h>
-
- typedef struct /* Keyboard status structure */
- {
- unsigned int
- right_shift_down : 1, /* Right Shift key depressed */
- left_shift_down : 1, /* Left Shift key depressed */
- ctrl_shift_down : 1, /* Ctrl key depressed */
- alt_shift_down : 1, /* Alt key depressed */
- scroll_on : 1, /* Scroll Lock is on */
- num_on : 1, /* Num Lock is on */
- caps_on : 1, /* Caps Lock is on */
- ins_on : 1, /* Insert state is active */
- filler : 3, /* Filler for word alignment */
- ctrl_numloc : 1, /* Suspend key is on */
- scroll_down : 1, /* Scroll Lock key depressed */
- num_down : 1, /* Num Lock key depressed */
- caps_down : 1, /* Caps Lock key depressed */
- ins_down : 1; /* Insert key depressed */
- } biosshiftstate;
-
- /* the far modifier is an MS-DOS specific thing and is
- implemented differently by different compilers
- how you assign a constant to a far pointer is also compiler
- dependent, this is how TC does it. BTW, don't have Ray Duncan or
- Peter Norton handy, I think this is the correct address for the
- status bytes, it seems to work anyway
- */
- biosshiftstate far *kbd_status = (biosshiftstate far *) 0x00000417L;
-
- main()
- {
- while(1)
- {
- printf("right_shift_down = %d\n",kbd_status->right_shift_down);
- printf("left_shift_down = %d\n",kbd_status->left_shift_down);
- printf("ctrl_shift_down = %d\n",kbd_status->ctrl_shift_down);
- printf("alt_shift_down = %d\n",kbd_status->alt_shift_down);
- printf("scroll_on = %d\n",kbd_status->scroll_on);
- printf("num_on = %d\n",kbd_status->num_on);
- printf("caps_on = %d\n",kbd_status->caps_on);
- printf("ins_on = %d\n",kbd_status->ins_on);
- printf("filler = %d\n",kbd_status->filler);
- printf("ctrl_numloc = %d\n",kbd_status->ctrl_numloc);
- printf("scroll_down = %d\n",kbd_status->scroll_down);
- printf("num_down = %d\n",kbd_status->num_down);
- printf("caps_down = %d\n",kbd_status->caps_down);
- printf("ins_down = %d\n",kbd_status->ins_down);
- }
- }
-